#pragma once

#include <memory>
#include <vector>

#include "../Math/Vector2.h"
#include "../Math/Matrix.h"
#include "../Network/Network.h"
#include "../Neuron/GHANeuron.h"

using namespace std;

class CGHANetowork
{
public:
	friend class GHA;

public:
	CGHANetowork() = delete;

	CGHANetowork(int nInputDimension, int nOutputDimension);

public:
	virtual bool Save(const char * szFileName = nullptr);

	virtual bool Load(const char * szFileName = nullptr);

	virtual Vector2 Execute(const Vector2 & InputData);

public:
	Matrix TransToMatrix();

private:
	int m_InputDimension;
	int m_OutputDimension;

	vector < shared_ptr<CGHANeuron> >  m_Neurons;
};